MFC (Microsoft Foundation Classes) এ Data Serialization এবং Deserialization হল দুটি গুরুত্বপূর্ণ কনসেপ্ট, যা ডেটা স্টোর এবং রিকভার করতে ব্যবহৃত হয়। এই দুটি পদ্ধতি CDocument ক্লাসে বিশেষভাবে ব্যবহৃত হয়, যেখানে ডেটা সংরক্ষণ এবং লোড করার জন্য এই পদ্ধতিগুলি গুরুত্বপূর্ণ ভূমিকা পালন করে।
Data Serialization
Serialization হল এমন একটি প্রক্রিয়া যার মাধ্যমে অবজেক্টের বর্তমান স্টেটকে (ডেটা) একটি নির্দিষ্ট ফরম্যাটে রূপান্তরিত করা হয়, যাতে তা স্টোর বা ট্রান্সফার করা যায়। সাধারণত এটি ফাইল, ডেটাবেস বা নেটওয়ার্কের মাধ্যমে ডেটা সঞ্চালনের জন্য ব্যবহৃত হয়। MFC তে CDocument ক্লাসের মাধ্যমে ডেটা সিরিয়ালাইজ করা হয়।
Serialization এর মাধ্যমে অবজেক্টের ডেটাকে স্ট্রিম (যেমন ফাইল স্ট্রিম বা মেমরি স্ট্রিম) আকারে রূপান্তর করা হয়, যাতে ডেটা পরবর্তী সময়ে পুনরুদ্ধার করা যেতে পারে।
Serialization এর প্রক্রিয়া:
- Serialize() ফাংশন: এই ফাংশনটি ডেটাকে স্ট্রিমে রূপান্তর করে এবং আবার সেই ডেটাকে পুনরুদ্ধার করতে ব্যবহৃত হয়।
- CArchive ক্লাস: এটি একটি স্ট্রিমের মতো কাজ করে এবং ডেটা পাঠানো এবং গ্রহণের জন্য ব্যবহৃত হয়।
Code Example (Serialization):
void CMyDocument::Serialize(CArchive& ar)
{
if (ar.IsStoring()) {
// ডেটা সেভ করা
ar << m_strData;
}
else {
// ডেটা লোড করা
ar >> m_strData;
}
}
এখানে, m_strData হল ডকুমেন্টের ডেটা, যা সিরিয়ালাইজ করার সময় ar (CArchive) এর মাধ্যমে সেভ বা লোড করা হয়।
Data Deserialization
Deserialization হল একটি প্রক্রিয়া যার মাধ্যমে সিরিয়ালাইজড ডেটা পুনরায় অবজেক্টের মধ্যে রূপান্তরিত হয়। অর্থাৎ, স্ট্রিমে সংরক্ষিত ডেটাকে পুনরুদ্ধার করে আসল অবজেক্টে ফিরিয়ে আনা। MFC তে CArchive ক্লাসের মাধ্যমে এই প্রক্রিয়া পরিচালিত হয়। যখন ডেটা Deserialize করা হয়, তখন স্ট্রিম থেকে ডেটা বের করে সেই ডেটাকে অবজেক্টের আকারে ফিরে পাওয়া যায়।
Deserialization এর প্রক্রিয়া:
- Serialize() ফাংশন: ডেটা পুনরুদ্ধারের জন্য একই Serialize() ফাংশন ব্যবহার হয়। যখন ar.IsLoading() চেক করা হয়, তখন এটি ডেটা লোড করে।
- CArchive ক্লাস: CArchive ক্লাস ব্যবহার করে ডেটাকে ফাইল বা অন্য কোনও স্ট্রিম থেকে পুনরুদ্ধার করা হয়।
Code Example (Deserialization):
void CMyDocument::Serialize(CArchive& ar)
{
if (ar.IsStoring()) {
// ডেটা সেভ করা
ar << m_strData;
}
else {
// ডেটা লোড করা
ar >> m_strData;
}
}
এখানে, যদি ar.IsLoading() হয়ে থাকে, তাহলে ডেটা পুনরুদ্ধার (deserialization) হয় এবং m_strData তে পুনরুদ্ধৃত ডেটা রাখা হয়।
Serialization এবং Deserialization এর প্রয়োগ
- ফাইল স্টোরেজ: অ্যাপ্লিকেশনটির ডেটা সিরিয়ালাইজ করে ফাইলে সংরক্ষণ করা হয়। পরবর্তী সময়ে সেই ফাইল থেকে ডেটা লোড করে পুনরুদ্ধার (deserialize) করা হয়।
- নেটওয়ার্ক কমিউনিকেশন: ডেটা সিরিয়ালাইজ করে নেটওয়ার্কের মাধ্যমে ট্রান্সফার করা হয়, তারপর রিসিভার সাইডে সেই ডেটা ডেসিরিয়ালাইজ করে কাজে লাগানো হয়।
- ডেটাবেস স্টোরেজ: অ্যাপ্লিকেশনটি ডেটা সিরিয়ালাইজ করে ডেটাবেসে সেভ করে এবং পরে ডেসিরিয়ালাইজ করে প্রয়োজনীয় ডেটা পুনরুদ্ধার করে।
সারাংশ
Data Serialization এবং Deserialization হল এমন দুটি প্রক্রিয়া যা ডেটাকে স্ট্রিমে রূপান্তর করে সংরক্ষণ এবং পুনরুদ্ধার করার জন্য ব্যবহৃত হয়। Serialization ডেটাকে একটি নির্দিষ্ট ফরম্যাটে রূপান্তর করে (যেমন ফাইল বা নেটওয়ার্ক স্ট্রিম), আর Deserialization সেই ডেটাকে পুনরায় অবজেক্টে রূপান্তরিত করে। MFC তে CDocument ক্লাসে এই প্রক্রিয়া গুলি ব্যবহৃত হয় এবং ডেটা সেভ ও লোড করার জন্য CArchive ক্লাসের সাহায্যে পরিচালিত হয়।
Read more